package ae.pcfc.cldos.online.web.model;


import java.util.Date;

import javax.validation.constraints.Future;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.format.annotation.DateTimeFormat;

import ae.pcfc.cldos.online.web.constraints.PassportExpiry;

/**
 * Visit Visa , Model bean , a sort of generic bean which may
 * be used for all the Visa related flow of information
 * @author Asna
 *
 */
public class VisitVisaLicenseInfo extends BaseModel {
	
	//Visit visa details
		private Integer strMonth;
		private String wfStatus;
	
		@Past
		private Date lastEntryDate;
	
		@NotEmpty
		@Size(max = 20)
		private String strPriority;
		
		@Size(max = 50)
		private String lastEntryPort;
	
		@NotEmpty
		@Size(max = 10)
		private String vvCancelMethod;
		
		@NotEmpty
		@Size(max = 10)
		private String strEntryPermitCollectionMethod;
	
	//Passport Details

		@NotEmpty
		@Size(max = 50)
		private String strNameInPassport;
		
		@NotEmpty
		@Size(max = 50)
		private String strNameInPassportArb;

		@Size(max = 20)
		@NotEmpty
		private String strPassportNo;
		
		
		@DateTimeFormat(pattern="dd/MM/yyyy") 
		@Past
		private Date issueDate;
		
		
		@Size(max = 30)
		@NotEmpty
		private String strCityOfIssue;
		
		@DateTimeFormat(pattern="dd/MM/yyyy") 
		@Future
		@PassportExpiry
		private Date expiryDate;
		
		//Personal Details
		@NotEmpty
		@Size(max = 30)
		private String strFamilyName;
		
		@Size(max = 30)
		private String strPreviousNationality;
		
		@NotEmpty
		@Size(max = 30)
		private String strFatherName;
		
		@NotEmpty
		@Size(max = 30)
		private String strMotherName;

		@NotEmpty
		@Size(max = 30)
		private String strFamilyNameArb;
		
		@NotEmpty
		@Size(max = 30)
		private String strFatherNameArb;
		
		@NotEmpty
		@Size(max = 30)
		private String strMotherNameArb;

		@DateTimeFormat(pattern="dd/MM/yyyy") 
		@Past
		private Date dateOfBirth;
		
		@NotEmpty
		@Size(max = 30)
		private String strBirthPlace;

		@NotNull
		private Long qualification;
		
		@NotNull
		private Integer spokenLanguage1;
		
		private Integer spokenLanguage2;
		private Integer spokenLanguage3;

//Other details referring to employee
		@NotEmpty
		@Size(max = 10)
		private String strGender;

		@NotEmpty
		@Size(max = 10)
		private String strMaritalStatus;

		@NotEmpty
		@Size(max = 20)
		private String strNationality;
		
		//address
		@NotEmpty
		@Size(max = 50)
		private String strAddressAbroad;
		
		//Comments
		@Size(max = 2000)
		private String adminComments;
		private String strStatus;

		public Date getLastEntryDate() {
			return lastEntryDate;
		}

		public void setLastEntryDate(Date lastEntryDate) {
			this.lastEntryDate = lastEntryDate;
		}

		public String getStrPriority() {
			return strPriority;
		}

		public void setStrPriority(String strPriority) {
			this.strPriority = strPriority;
		}

		public String getLastEntryPort() {
			return lastEntryPort;
		}

		public void setLastEntryPort(String lastEntryPort) {
			this.lastEntryPort = lastEntryPort;
		}

		public String getVvCancelMethod() {
			return vvCancelMethod;
		}

		public void setVvCancelMethod(String vvCancelMethod) {
			this.vvCancelMethod = vvCancelMethod;
		}

		public String getStrNameInPassport() {
			return strNameInPassport;
		}

		public void setStrNameInPassport(String strNameInPassport) {
			this.strNameInPassport = strNameInPassport;
		}

		public String getStrNameInPassportArb() {
			return strNameInPassportArb;
		}

		public void setStrNameInPassportArb(String strNameInPassportArb) {
			this.strNameInPassportArb = strNameInPassportArb;
		}

		public String getStrPassportNo() {
			return strPassportNo;
		}

		public void setStrPassportNo(String strPassportNo) {
			this.strPassportNo = strPassportNo;
		}

	
		public Date getIssueDate() {
			return issueDate;
		}

		public void setIssueDate(Date issueDate) {
			this.issueDate = issueDate;
		}

		public String getStrCityOfIssue() {
			return strCityOfIssue;
		}

		public void setStrCityOfIssue(String strCityOfIssue) {
			this.strCityOfIssue = strCityOfIssue;
		}

		public Date getExpiryDate() {
			return expiryDate;
		}


		public Integer getStrMonth() {
			return strMonth;
		}

		public void setStrMonth(Integer strMonth) {
			this.strMonth = strMonth;
		}

		public void setExpiryDate(Date expiryDate) {
			this.expiryDate = expiryDate;
		}

		public String getStrFamilyName() {
			return strFamilyName;
		}

		public void setStrFamilyName(String strFamilyName) {
			this.strFamilyName = strFamilyName;
		}

		public String getStrFatherName() {
			return strFatherName;
		}

		public void setStrFatherName(String strFatherName) {
			this.strFatherName = strFatherName;
		}

		public String getStrMotherName() {
			return strMotherName;
		}

		public void setStrMotherName(String strMotherName) {
			this.strMotherName = strMotherName;
		}

		public String getStrFamilyNameArb() {
			return strFamilyNameArb;
		}

		public void setStrFamilyNameArb(String strFamilyNameArb) {
			this.strFamilyNameArb = strFamilyNameArb;
		}


		public String getStrMotherNameArb() {
			return strMotherNameArb;
		}

		public void setStrMotherNameArb(String strMotherNameArb) {
			this.strMotherNameArb = strMotherNameArb;
		}

		public Date getDateOfBirth() {
			return dateOfBirth;
		}

		public void setDateOfBirth(Date dateOfBirth) {
			this.dateOfBirth = dateOfBirth;
		}

		public String getStrBirthPlace() {
			return strBirthPlace;
		}

		public void setStrBirthPlace(String strBirthPlace) {
			this.strBirthPlace = strBirthPlace;
		}

		public Long getQualification() {
			return qualification;
		}

		public void setQualification(Long qualification) {
			this.qualification = qualification;
		}

		public Integer getSpokenLanguage1() {
			return spokenLanguage1;
		}

		public void setSpokenLanguage1(Integer spokenLanguage1) {
			this.spokenLanguage1 = spokenLanguage1;
		}

		public Integer getSpokenLanguage2() {
			return spokenLanguage2;
		}

		public void setSpokenLanguage2(Integer spokenLanguage2) {
			this.spokenLanguage2 = spokenLanguage2;
		}

		public Integer getSpokenLanguage3() {
			return spokenLanguage3;
		}

		public void setSpokenLanguage3(Integer spokenLanguage3) {
			this.spokenLanguage3 = spokenLanguage3;
		}

		public String getStrGender() {
			return strGender;
		}

		public void setStrGender(String strGender) {
			this.strGender = strGender;
		}

		public String getStrMaritalStatus() {
			return strMaritalStatus;
		}

		public void setStrMaritalStatus(String strMaritalStatus) {
			this.strMaritalStatus = strMaritalStatus;
		}

		public String getStrNationality() {
			return strNationality;
		}

		public void setStrNationality(String strNationality) {
			this.strNationality = strNationality;
		}

		public String getStrAddressAbroad() {
			return strAddressAbroad;
		}

		public void setStrAddressAbroad(String strAddressAbroad) {
			this.strAddressAbroad = strAddressAbroad;
		}

		public String getStrFatherNameArb() {
			return strFatherNameArb;
		}

		public void setStrFatherNameArb(String strFatherNameArb) {
			this.strFatherNameArb = strFatherNameArb;
		}

		public String getAdminComments() {
			return adminComments;
		}

		public void setAdminComments(String adminComments) {
			this.adminComments = adminComments;
		}

		public String getStrStatus() {
			return strStatus;
		}

		public void setStrStatus(String strStatus) {
			this.strStatus = strStatus;
		}

		public String getStrEntryPermitCollectionMethod() {
			return strEntryPermitCollectionMethod;
		}

		public void setStrEntryPermitCollectionMethod(
				String strEntryPermitCollectionMethod) {
			this.strEntryPermitCollectionMethod = strEntryPermitCollectionMethod;
		}

		public String getStrPreviousNationality() {
			return strPreviousNationality;
		}

		public void setStrPreviousNationality(String strPreviousNationality) {
			this.strPreviousNationality = strPreviousNationality;
		}

		public String getWfStatus() {
			return wfStatus;
		}

		public void setWfStatus(String wfStatus) {
			this.wfStatus = wfStatus;
		}
	
	
	
	
}
